package org.jeecg.modules.online.cgreport.service;

import java.util.Map;

/**
 * Online报表API Service
 */
public interface IOnlCgreportAPIService {

    /**
     * 通过 head code 获取 sql语句，并执行该语句返回查询数据
     *
     * @param id     报表ID
     * @param params 查询条件
     * @return
     */
    Map<String, Object> getDataById(String id, Map<String, Object> params);

    /**
     * 通过 head code 获取 sql语句，并执行该语句返回查询数据
     *
     * @param code   报表Code
     * @param params 查询条件
     * @return
     */
    Map<String, Object> getDataByCode(String code, Map<String, Object> params);

    /**
     * 通过 head code 获取 sql语句，并执行该语句返回查询数据
     *
     * @param id     报表ID，优先通过ID查
     * @param code   报表Code，如果没传ID就通过code查
     * @param params 查询条件
     * @return
     */
    Map<String, Object> getData(String id, String code, Map<String, Object> params);

    /**
     * 执行SQL，自动判断该走多数据源还是该走稳定逻辑
     *
     * @param dbKey
     * @param sql
     * @param params
     * @param headId
     * @return
     * @throws Exception
     */
    Map<String, Object> executeSelectSqlRoute(String dbKey, String sql, Map<String, Object> params, String headId) throws Exception;

}
